package com.ezops.poc.dao;


/**
 * Define the strategy for persisting the client file received into our
 * database. Since the client format is dynamic , and we are using relational
 * DB, the data mapping will be provided by this strategy. If a new client is
 * added or a new asset class is added a new implementation of this class should
 * be added.
 * 
 * @author vgaurav
 * 
 */
public interface EzopsPersistanceStrategy<T> {

	/**
	 * Generate the query for persisting the client model.
	 * 
	 * @param clientModel
	 * @return
	 */
	public String getQuery();

	/**
	 * Return the values of columns defined in the query. 
	 * 
	 * @param model
	 * @return
	 */
	public Object[] getColumnValues(T model);
}
